package oa.util;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.junit.Test;

public class UploadUtils {
	public static String saveUploadFile(File upload, String filepath) {
		// 把日期格式化成字符串的一个帮助类
		SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd");
		/*
		 * 得到upload文件夹的绝对路径 ServletActionContext.getServletContext() =
		 * C:\Program Files\Apache Software Foundation\Tomcat
		 * 6.0\webapps\itcastoa823\WEB-INF/upload/2012\02\16\aaaaadfasdf
		 */
		String basePath = ServletActionContext.getServletContext().getRealPath(
				filepath);
		// 把日期类型格式化为"/yyyy/MM/dd/"这种形式的字符串
		String subPath = sdf.format(new Date());
		// 如果文件夹不存在，就创建文件夹
		File dir = new File(basePath + subPath);
		if (!dir.exists()) {
			dir.mkdirs();
		}
		// String path = basePath+"/"+this.uploadFileName;
		// UUID.randomUUID().toString()能够保证名字的唯一性
		String path = basePath + subPath + UUID.randomUUID().toString();
		File dest = new File(path);
		// 把文件移动到dest处
		upload.renameTo(dest);
		return path;
	}

	/**
	 * 上传图片
	 * 
	 * @param upload
	 * @return
	 */
	public static String saveUploadPic(File pic,String filename,String username) {
		String[] str = { ".jpg", ".jpeg", ".bmp", ".gif" };
		if (pic == null || pic.length() > 4194304) {
			// 文件过大
			return "error";
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		 String basePath = "";
		 String path = username+"_" + sdf.format(new Date())+filename.substring(filename.lastIndexOf("."));
		for(String s: str)
		{
			if(filename.endsWith(s))
			{
				 basePath = ServletActionContext.getServletContext().getRealPath("/images/userImage"); 
				 File saveFile = new File(new File(basePath), path); // 在该实际路径下实例化一个文件  
				 if(!saveFile.getParentFile().exists())
				 {
					 saveFile.getParentFile().mkdirs();
				 }
				 
				 try {
					 // 执行文件上传  
	                 // FileUtils 类名 org.apache.commons.io.FileUtils;  
	                 // 是commons-io包中的，commons-fileupload 必须依赖  
	                 // commons-io包实现文件上次，实际上就是将一个文件转换成流文件进行读写 
					FileUtils.copyFile(pic, saveFile);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					return "error";
				}
			}
		}
		return basePath +"\\"+path;
	}

}
